package com.groupThree.dao;

import com.groupThree.bean.Express;
import com.groupThree.exception.DuplicateCodeException;

import java.util.List;
import java.util.Map;

public interface BaseExpressDao {
    /**
     * 用于查询所有快递，待取快递
     * @return [{size:总数，day：新增}，{size:总数,day：新增}]
     */
    List<Map<String,Integer>> console();

    /**
     * 查询所有快递
     * @param limit
     * @param offset
     * @param pageNumber
     * @return 快递集合
     */

    List<Express> findAll(boolean limit,int offset,int pageNumber);

    /**
     * 根据单号查询
     * @param number
     * @return
     */
    Express fidByNumber(String number);

    /**\
     * 根据取件码查询
     * @param code
     * @return
     */
    Express fidByCode(String code);

    /**
     * 根据用户手机号查询
     * @param userPhone
     * @return
     */
    List<Express> findByUserPhone(String userPhone);


    /**
     * 根据用户手机号查询
     * @param userPhone
     * @return
     */
    List<Express> findByUserPhoneAndStatus(String userPhone,int status);

    /**
     * 根据录入人手机号查询
     * @param sysPhone
     * @return
     */
    List<Express> findBySysPhone(String sysPhone);

    /**
     * 快递录入
     * @param e
     * @return
     */
    boolean insert (Express e) throws DuplicateCodeException;

    /**
     * 修改快递，传入id，跟新快递对象
     * @param id
     * @param newExpress
     * @return
     */
    boolean update(int id,Express newExpress);

    /**
     * 更改快递状态
     * @param code
     * @return
     */
    boolean updateStatus(String code);

    /**
     * 根据id删除快递
     * @param id
     * @return
     */
    boolean delete(int id);
}
